#!/bin/sh

# /etc/rc.d/rc.gpsd
# Start/stop/restart gpsd
# Sebastian Arcus and David Spencer
#
# To enable automatic discovery of your GPS device by udev, uncomment the
# appropriate line of /etc/udev/rules.d/97-gpsd.rules
#
# Configuration options may be set in /etc/rc.d/rc.gpsd.conf
# but the defaults will usually be adequate.

gpsd_start() {

  if [ ! -x /lib/udev/gpsd.hotplug ]; then
    echo "$(basename $0): /lib/udev/gpsd.hotplug not found (or not executable); cannot start."
    exit 1
  fi

  if [ -r /etc/rc.d/rc.gpsd.conf ]; then
    . /etc/rc.d/rc.gpsd.conf
  fi
  # Set config defaults in case the .conf file was absent or bogus
  GPSD_DEVICES="${GPSD_DEVICES:-/dev/gps*}"
  GPSD_OPTIONS="${GPSD_OPTIONS:-}"
  GPSD_SOCKET="${GPSD_SOCKET:-/var/run/gpsd.sock}"

  for DEVNAME in $GPSD_DEVICES; do
    if [ -e $DEVNAME ]; then
      echo "$(basename $0): Starting gpsd for $DEVNAME"
      ACTION=add DEVNAME=$DEVNAME /lib/udev/gpsd.hotplug
    else
      echo "$(basename $0): $DEVNAME not found, gpsd not started"
    fi
  done

}

gpsd_stop() {
  echo "Stopping gpsd..."
  killall gpsd >/dev/null 2>&1
  return 0
}

case "$1" in
  start)
    gpsd_start
    ;;
  stop)
    gpsd_stop
    ;;
  restart)
    gpsd_stop
    sleep 1
    gpsd_start
    ;;
  *)
    echo "Usage: $0 start|stop|restart"
    exit 1
    ;;
esac
